Measuring Video-Content Viewing

ABSTRACT

A computer-implemented method of using video viewing activity data as input to an aggregation engine built on the Hadoop MapReduce framework which calculates second-by-second video viewing activity aggregated to the analyst&#39;s choice of (a) geographic area, (b) video server, (c) video content (channel call sign, video program, etc.), or (d) viewer demographic, or any combination of these fields, for each second of the day represented in the video viewing activity data. Also calculates overall viewing for use as a denominator in calculations. The source data may be extracted from a database defined according to the Cable Television Laboratories, Inc. Media Measurement Data Model defined in “Audience Data Measurement Specification” as “OpenCable™. Specifications, Audience Measurement, Audience Measurement Data Specification” document OC-SP-AMD-101-130502 or any similar format. These metrics provide detailed data needed to calculate information on customer viewing behavior that can drive business decisions for service providers, advertisers, and content producers.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 16/730,423, filed on Dec. 30, 2019, which is acontinuation of and claims priority to U.S. patent application Ser. No.14/013,031, filed on Aug. 29, 2013, now U.S. Pat. No. 10,645,433, whichare hereby incorporated by reference in their entirety.

This application is related to U.S. Pat. No. 8,365,212 B1 issued on Jan.29, 2013 entitled “SYSTEM AND METHOD FOR ANALYZING HUMAN INTERACTIONWITH ELECTRONIC DEVICES THAT ACCESS A COMPUTER SYSTEM THROUGH A NETWORK”by the present inventor which is incorporated by reference in itsentirety but is not admitted to be prior art.

This application is also related to U.S. Pat. No. 8,365,213 B1 issued onJan. 29, 2013 entitled “SYSTEM AND METHOD FOR MEASURING TELEVISIONADVERTISING AND PROGRAM VIEWING AT A SECOND-BY-SECOND LEVEL AND FORMEASURING EFFECTIVENESS OF TARGETED ADVERTISING” by the present inventorwhich is incorporated by reference in its entirety but is not admittedto be prior art.

This application is also related to the co-pending application U.S.application Ser. No. 13/360,704 filed on Jan. 28, 2012 entitled “SYSTEMAND METHOD FOR MEASURING LONGITUDINAL VIDEO ASSET VIEWING AT ASECOND-BY-SECOND LEVEL TO UNDERSTAND BEHAVIOR OF VIEWERS AS THEYINTERACT WITH VIDEO ASSET VIEWING DEVICES THAT ACCESS A COMPUTER SYSTEMTHROUGH A NETWORK” by the present inventor which is incorporated byreference in its entirety but is not admitted to be prior art.

This application is also related to the co-pending application U.S.application Ser. No. 13/567,073 filed on Aug. 5, 2012 entitled “SYSTEMAND METHOD FOR MEASURING LINEAR, DVR, AND VOD VIDEO PROGRAM VIEWING AT ASECOND-BY-SECOND LEVEL TO UNDERSTAND BEHAVIOR OF VIEWERS AS THEYINTERACT WITH VIDEO ASSET VIEWING DEVICES DELIVERING CONTENT THROUGH ANETWORK” by the present inventor which is incorporated by reference inits entirety but is not admitted to be prior art.

This application is also related to the co-pending application U.S.application Ser. No. 13/740,199 filed on Jan. 13, 2013 entitled “SYSTEMAND METHOD FOR MEASURING DEMOGRAPHIC-BASED HOUSEHOLD ADVERTISING REACH;IMPRESSIONS, SHARE, HUT, RATING, AND CUMULATIVE AUDIENCE; AND VIDEOPROGRAM VIEWING, BASED ON SECOND-BY-SECOND HOUSE LEVEL VIEWING ACTIVITY,TO UNDERSTAND BEHAVIOR OF VIEWERS AS THEY INTERACT WITH VIDEO ASSETVIEWING DEVICES DELIVERING CONTENT THROUGH A NETWORK” by the presentinventor which is incorporated by reference in its entirety but is notadmitted to be prior art.

BACKGROUND—PRIOR ART

I have not found any relevant prior art at the present time.

BACKGROUND INFORMATION General Statement of Problem

With the ever increasing number of consumer choices for televisionviewing, it is important for advertisers, content producers, and serviceproviders such as cable television and satellite television and internetprotocol television companies to be able to accurately measure audienceviewership. I have discussed this problem extensively in my priorapplications. This application teaches how to analyze video viewingactivity using the Hadoop MapReduce distributed computing framework.

Existing Tools for Data Analysis

In my prior applications I taught how to analyze video viewing activity(channel tuning data) using various methods that rely on loading datainto arrays in the memory of a computer. In certain cases, an analystmay wish to use the Hadoop MapReduce distributed computing framework toanalyze video viewing activity. I have not identified any patents thatteach how to use MapReduce to solve this problem.

SUMMARY

In accordance with one embodiment, I disclose a computer-implementedmethod of aggregating video viewing activity data using the HadoopMapReduce distributed computing framework. This will allow an analyst toaggregate second-by-second video viewing activity for various kinds ofvideo content. Once this data has been aggregated, it can be used in anynumber of downstream analytic processes to provide detailed informationon customer viewing behavior which can be used to drive businessdecisions for service providers, advertisers, and content producers.

Advantages

By using the Hadoop MapReduce distributed computing framework toaggregate the video viewing activity, an analyst can harness the powerof hundreds or even thousands of processors working in parallel to solvethe problem of aggregating video viewing activity data. This will allowan analyst to work with data sets of all sizes including extremely largedata sets. The resulting files can be loaded to a relational databasefor various analytics similar to what I have taught in my other patentapplications referenced previously. Additionally, the resulting filescan be used in other Hadoop processes to correlate video viewingactivity with other social media activity, with weather, with otherprogramming content, and similar uses.

Definitions

The following are definitions that will aid in understanding one or moreof the embodiments presented herein:

Computer readable format means any data format that can be read by acomputer program or a human being as necessary. Nonlimiting examplesinclude:

(i) formatted text files,

(ii) pipe delimited text files,

(iii) data base tables,

(iv) Extensible Markup Language (XML) messages,

(v) a printed report,

(vi) JavaScript Object Notation messages.

Data analysis computer system means a combination of one or morecomputers on which a Data Analysis Program or Programs or Hadoop orMapReduce processes can be executed. Nonlimiting examples include:

(i) one or more computers where video viewing activity data can be usedto create video viewing detail records,

(ii) a single computer running the MapReduce distributed computingframework for parallel processing,

(iii) a cluster of many computers running the MapReduce distributedcomputing framework for parallel processing where many means a few tohundreds or even thousands,

(iv) a Hadoop cluster of computers.

Data analysis computer of known type means any commonly availablecomputer system running a commonly known operating system. Nonlimitingexamples include:

(i) a standard personal computer running WINDOWS 7 Professionaloperating system from MICROSOFT® Corporation,

(ii) a computer running the UNIX operating system,

(iii) a computer running the Linux operating system,

(iv) a computer in a cloud computing environment,

(v) a mainframe computer with its operating system.

Data analysis program means a computer program or programs that are ableto execute on a Data analysis computer of known type. Nonlimitingexamples include:

(i) a Pig Latin script running MapReduce,

(ii) a JAVA program running MapReduce,

(iii) a Python script running MapReduce,

(iv) a COBOL program.

Demographic information means any data item that can describe acharacteristic of a viewer or a subscriber or a household associatedwith a viewer who is operating the video asset viewing device.Nonlimiting examples include income, ethnicity, gender, age, maritalstatus, location, geographic area, postal code, census data, occupation,social grouping, family status, any proprietary demographic grouping,segmentation, credit score, dwelling type, homeownership status,property ownership status, rental status, vehicle ownership, tax rolls,credit card usage, religious affiliation, sports interest, politicalparty affiliation, cable television subscriber type, cable televisionsubscriber package level, and cell phone service level.

Device Characteristic means any feature or capability or aspect ordescriptive qualifier or identifier of a video viewing device.Nonlimiting examples include that this may identify the type of devicesuch as a set-top box, a tablet, a smart phone; a capability of thedevice such as the ability to record video or to support multipleviewing windows, or a manufacturer identifier.

Device Type is a subset of Device Characteristic where device type may,as a nonlimiting example, identify the type of device such as a set-topbox, a tablet, a smart phone.

Geographic information means any service area or any network hierarchydesignation or marketing area or other designated area used by a cabletelevision company or a satellite television company or IP Televisiondelivery company or video asset delivery system. The boundary ordescription of a geographic area is defined based on the needs of theservice provider. Nonlimiting examples include a Market in a cablecompany network, a Headend in a cable company network, a Hub in a cablecompany network, a census tract, a cell tower identifier, a service areafor satellite TV, advertising zone, a zip code, or some other geographicidentifier. The geographic information may then be used to identify thelocation of a video asset viewing device or geographic information aboutthe house associated with the device or the location of the device atthe time of the viewer interaction in the event that the viewerinteraction occurs in a location different than the location of thehouse associated with the device.

Network means any computer network. Nonlimiting examples include:

(i) a cable television network,

(ii) a cellular telephony network,

(iii) hybrid fiber coax system,

(iv) a satellite television network,

(v) a wi-fi network,

(vi) any means that supports communication among video asset viewingdevices or electronic devices or computers or computer systems.

Pipe delimited text files means data files where the fields areseparated by the “I” character.

Set-top box means a video asset viewing device that receives externalsignals and decodes those signals into content that can be viewed on atelevision screen or similar display device. The signals may come from acable television system, a satellite television system, a network, orany other suitable means. A set-top box may have one or more tuners. Theset-top box allows the user to interact with it to control what isdisplayed on the television screen. The set-top box is able to capturethe commands given by the user and then transmit those commands toanother computer system. For purposes of this application, stating thata set-top box tunes to a channel is equivalent to stating that a tunerin a set-top box has tuned to a channel. A set-topbox may also play backpreviously recorded video content.

STB means Set-top box.

Tuner means a tuner in a Set-top box.

Tuner index means an identifier of a tuner in a Set-top box.

Video asset means any programming content that may be viewed and/orheard. A Video Program may contain multiple Video Assets. Nonlimitingexamples of Video Asset include:

(i) advertisements or commercials,

(ii) movies,

(iii) sports programs,

(iv) news casts,

(v) music,

(vi) television programs,

(vii) video recordings.

Video asset viewing device means any electronic device that may be usedeither directly or indirectly by a human being to interact with videocontent where the video content is provided by a cable television systemor a satellite television system or a computer system accessed through anetwork. Nonlimiting examples include: Gaming station, web browser, MP3Player, Internet Protocol phone, Internet Protocol television, mobiledevice, mobile smart phone, set-top box, satellite television receiver,set-top box in a cable television network, set-top box in a satellitetelevision system, cell phone, personal communication device, personalvideo recorder, personal video player, two-way interactive serviceplatforms, personal computer, tablet device.

Video server delivering video content through a network means anycomputer system, any individual piece of computer equipment orelectronic gear, or any combination of computer equipment or electronicgear which enables or facilitates the viewer interaction with the videoasset viewing device. Nonlimiting examples include:

(i) cable television system,

(ii) cable television switched digital video system,

(iii) cellular phone network,

(iv) satellite television system,

(v) web server,

(vi) any individual piece of computer equipment or electronic gear,

(vii) any combination of computer equipment or electronic gear.

Video viewing activity means any identifiable activity that a Videoasset viewing device operator may do in regard to a Video asset viewingdevice and where such activity can be captured by the video assetviewing device or by the video server delivering video content through anetwork that supports the device. Nonlimiting examples include:

(i) power on/power off, open web page, close web page,

(ii) channel up/channel down/channel selection, play video content onweb browser,

(iii) volume up/volume down/mute/unmute,

(iv) any trick play such as fast forward, rewind, pause

(v) recording video content,

(vi) playing back recorded video content,

(vii) invoking a menu, choosing a menu option,

(viii) any response to a screen prompt

(ix) playing live video content.

Video viewing activity means any measurements or aggregations producedby the MapReduce distributed computing framework as it aggregates videoviewing detail records or any value calculated by a Data AnalysisProgram as part of this process.

Viewer means the human being causing a Viewer interaction; the user of aSet-top box or a Video asset viewing device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 provides an overview of an exemplary process for collectingviewer interaction data derived from a plurality of viewers interactingwith video content that was delivered on a plurality of video assetviewing devices delivering content through a network and then loadingthat data to a Media Measurement Data Base.

FIG. 2 illustrates an exemplary media measurement process from creationof the video viewing activity data file to creation of the variousaggregated video viewing activity files which can then be used indownstream analytic processes.

FIG. 3 illustrates an exemplary record layout for a Video ViewingActivity Data File 130 record along with sample data, according to oneembodiment.

FIG. 4 illustrates an exemplary record layout for a Video Viewing DetailData File 150 record along with sample data, according to oneembodiment.

FIG. 5 illustrates an exemplary record layout for an Aggregated VideoViewing Geo+Server+Content+Demo File 220 record along with sample data,according to one embodiment.

FIG. 6 Illustrates an exemplary record layout for an Aggregated VideoViewing Geo+Server+Content File 230 record along with sample data,according to one embodiment.

FIG. 7 Illustrates an exemplary record layout for an Aggregated VideoViewing Content File 240 record along with sample data, according to oneembodiment.

FIG. 8 Illustrates an exemplary record layout for an Aggregated VideoViewing File 250 record along with sample data, according to oneembodiment.

DETAILED DESCRIPTION OF THE DRAWINGS

When reading the information below, it can be appreciated that these aremerely samples of table layouts, format and content, and many aspects ofthese tables may be varied or expanded within the scope of theembodiment. The table layouts, field formats and content, algorithms,and other aspects are what I presently contemplate for this embodiment,but other table layouts, field formats and content, algorithms, etc. canbe used. The algorithms are samples and various aspects of thealgorithms may be varied or expanded within the scope of the embodiment.

In one embodiment the MapReduce Aggregation Engine 200 can beimplemented on computer clusters running a standard Hadoop distributionfrom Apache under the Linux operating system. The MapReduce AggregationEngine 200 can be implemented in JAVA or Pig. The reader may find moreinformation about various Apache open source projects from TheApacheSoftware Foundation at http://apache.org. Pig is a dataflowscripting language used to run dataflows on Hadoop. Pig uses the HadoopDistributed File System and the Hadoop processing system which isMapReduce. Pig is an Apache open source project. The reader may findmore information about Pig at http://pig.apache.org. Those skilled inthe art will readily recognize these tools.

Note on Media Measurement Data Model

Cable Television Laboratories, Inc. has published an “Audience DataMeasurement Specification” as “OpenCable™ Specifications, AudienceMeasurement, Audience Measurement Data Specification” having DocumentControl Number “OC-SP-AMD-101-130502” copyright© Cable TelevisionLaboratories, Inc. 2013 which contains a Media Measurement Data Modeldatabase design which can be used as a source of data for the MapReduceAggregation Engine 200 which I teach how to build in this application.The teaching in my present application can be implemented in conjunctionwith that Media Measurement Data Model or with any number of data modelsas long as the required input data is provided as described herein.

Additionally, my MapReduce Aggregation Engine 200 creates files whichmay be used to load additional tables in a Media Measurement Data Modelsuch as the one published by Cable Television Laboratories, Inc. Thesefiles are described in FIGS. 5 to 8.

Note: Numbering in the Drawings—The numbers in the drawings are usually,but not always, in sequential order.

FIG. 1 provides an overview of an exemplary process for collectingviewer interaction data derived from a plurality of viewers interactingwith video content that was delivered on a plurality of video assetviewing devices delivering content through a network and then loadingthat data to a Media Measurement Data Base. This figure illustratesseveral viewers interacting with video asset viewing devices to viewcontent which was delivered to those devices across a network and thento collect viewing activity from those devices.

In this nonlimiting example, the purpose is not to describe in detailthe operations of video content delivery network or a data collectionprocess, but simply to show how the data that is collected from thatsystem can be made available to my MapReduce Aggregation Engine 200.

It begins with Viewer Viewing Linear Content 9200 who is interactingwith a set-top box 9210 and television 9220 as he views linear content.The set-top box 9210 interacts with a Video Content Delivery System 9250which delivers the content across a Network 9230.

It continues with Viewer Viewing DVR Content 9202 who is interactingwith a set-top box 9210 and television 9220 as he interacts with DVRcontent recording content and playing back recorded content usingvarious modes including trick plays. The set-top box 9210 interacts witha Video Content Delivery System 9250 which delivers the content across aNetwork 9230.

It continues with Viewer Viewing VOD Content 9203 who is interactingwith a set-top box 9210 and television 9220 as he interacts with VODcontent playing the content using various modes including trick plays.The set-top box 9210 interacts with a Video Content Delivery System 9250which delivers the content across a Network 9230.

It continues with Viewer viewing video content using tablet, smartphone, IP TV, or other video viewing device 9204 who is interacting witha variety of Video Viewing Devices 9212, including but not limited totablet, smart phone, IP TV, PC, etc. The video viewing device interactswith a Video Content Delivery System 9250 which delivers the contentacross a Network 9230.

Video Content Delivery System 9250 then interacts with a ViewerInteraction Data, Data Collection System 9260 which collects all mannerof viewer interaction data including Linear viewing includingtime-shifted linear viewing, Digital Video Recorder recording andplayback/viewing, and Video on Demand viewing. The Viewer InteractionData, Data Collection System 9260 then processes the data as needed toload it to a Media Measurement Data Base 100. The data in the MediaMeasurement Data Base 100 can then be used as input to my AggregationEngine 200 as described in FIG. 2.

FIG. 2 illustrates an exemplary media measurement process from creationof the Video Viewing Activity Data File 130 to creation of the variousaggregated video viewing activity files (Parts 220, 230, 240, 250) whichcan then be provided to downstream analytic processes as shown byProvide Files to Downstream Analytic Processes 210.

As noted previously, the video viewing activity may be sourced from aMedia Measurement Data Base such as the one described in the CableTelevision Laboratories, Inc. specification. The populating of the MediaMeasurement Database 100 is beyond the scope of this application and soonly brief remarks will be made in reference to that. There are videoviewing data collection systems that are commonly used in the industryfor collecting channel tuning or video viewing activity data includingswitched digital video systems, set top box applications, internetprotocol video viewing applications, and other video viewingapplications. These systems enable the collection of the video viewingevents which can be loaded to a Media Measurement Database 100. Fromsuch a database, Video Viewing Activity Data can be extracted in aformat similar to that shown in FIG. 3 Video Viewing Activity Data File130.

Proceeding with the review of FIG. 2, the process begins with MediaViewing Measurement Process Overview 110. The first step is to extractthe video viewing events as per Extract Video Viewing Activity Data fromMedia Measurement Data Base 120. Those skilled in the art will have nodifficulty creating a database query or similar process to extract datafrom a Media Measurement Database 100 or other source and making itavailable in a format similar to that defined in Video Viewing ActivityData File 130. The file structure is defined in FIG. 3 Video ViewingActivity Data File 130 which describes an exemplary format for the inputvideo viewing activity data. As part of the extract process, the systemmay perform the following activities to prepare the data for processing:

-   -   Discard tuning events having a duration less than a specified        number of seconds    -   Truncate tuning events having a duration greater than a        specified number of seconds    -   Map channels such that viewing of a high definition and a        standard definition version of the same channel are assigned the        same channel call sign

Other data preparation activities can be done according to businessneeds. Those with reasonable skill in the art will readily recognize howto perform these activities.

Proceeding with the review of FIG. 2, the Video Viewing Activity DataFile 130 is then passed to a Data Explosion Process 140. In this processthe individual tuning events are exploded such that there is one recordcreated for every second of the tune duration represented in the videoviewing activity record. Additionally, the detail keys and the tune-indatetime and tune-out datetime and tune duration can be discarded atthis time because the MapReduce process will aggregate across thosedetail keys. In an alternative embodiment, any field that is not used inthe aggregation process could be omitted from the Video Viewing ActivityData File 130 file. I have included these additional fields to provide acomprehensive picture recognizing that one can always drop the fieldsthat they choose not to use.

The computer algorithm that the Data Explosion Process 140 runs tocreate the Video Viewing Detail File 150 is as follows:

Looping Process to Create the Video Viewing Detail Records:

For each input record in Video Viewing Activity Data File 130  PERFORMVARYING SUB   FROM TUNE_IN_SECOND_OF_DAY 1090   BY 1   UNTIL SUB >TUNE_OUT_SECOND_OF_DAY 1110    MOVE GEOGRAPHIC_ID   1010 toGEOGRAPHIC_ID   1210    MOVE VIDEO_SERVER_ID  1020 toVIDEO_SERVER_ID  1220    MOVE VIDEO_CONTENT_ID 1030 toVIDEO_CONTENT_ID  1230    MOVE DEMOGRAPHIC_ID  1070 toDEMOGRAPHIC_ID   1240    MOVE SUB          to SECOND_OF_DAY_WHEN_TUNED1250    MOVE 1            to COUNT_OF_1      1260    WRITE Video ViewingActivity Data File 150 End Loop Note: The following fields wereoptionally included in Video Viewing Activity Data File 130 for datavalidation purposes. During Data Explosion Process 140 they are droppedso that they do not pass forward to Video Viewing Detail File 150.

VIDEO_ASSET VIEWING_DEVICE_ID 1040 HOUSE_ID 1050 VIEWER_ID 1060TUNE_IN_DATE_TIME 1080 TUNE_OUT_DATE_TIME 1100 TUNE_DURATION_SECONDS1120.

The explosion process can be run in several ways to achieve the sameresult. I have included two alternative embodiments.

Alternative Embodiment #1

For each input record in Video Viewing Activity Data File 130  PERFORMVARYING SUB   FROM TUNE_IN_SECOND_OF_DAY 1090   BY 1   UNTIL SUB >(TUNE_IN_SECOND_OF_DAY  1090 +          TUNE_DURATION_SECONDS  1120)   MOVE GEOGRAPHIC_ID    1010 to GEOGRAPHIC_ID    1210    MOVEVIDEO_SERVER_ID   1020 to VIDEO_SERVER_ID   1220    MOVEVIDEO_CONTENT_ID  1030 to VIDEO_CONTENT_ID   1230    MOVEDEMOGRAPHIC_ID   1070 to DEMOGRAPHIC_ID   1240    MOVE SUB         toSECOND_OF_DAY_WHEN_TUNED 1250    MOVE 1            toCOUNT_OF_1        1260    WRITE Video Viewing Detail File 150 End Loop

Alternative Embodiment #2

If the tune duration is provided, the looping construct can be done asfollows:

For each input record in Video Viewing Activity Data File 130  PERFORMVARYING SUB   FROM TUNE_IN_DATE_TIME    1080   BY 1   UNTILSUB >     TUNE_OUT_DATE_TIME     1100    MOVE GEOGRAPHIC_ID    1010 toGEOGRAPHIC_ID    1210    MOVE VIDEO_SERVER_ID   1020 toVIDEO_SERVER_ID   1220    MOVE VIDEO_CONTENT_ID  1030 toVIDEO_CONTENT_ID   1230    MOVE DEMOGRAPHIC_ID   1070 toDEMOGRAPHIC_ID    1240    MOVE SUB           toSECOND_OF_DAY_WHEN_TUNED 1250    MOVE 1              toCOUNT_OF_1      1260    WRITE Video Viewing Detail File 150 End LoopNote: In this case, the SECOND_OF_ DAY_ WHEN_ TUNED 1250 will representa UNIX EPOCH time stamp. Note: In each case the Video Viewing DetailFile 150 records can be written directly to the Hadoop Distributed FileSystem (HDFS) so that the video viewing detail records are ready foruseby the MapReduce distributed computing framework. Note: The VideoViewing Activity Data File 130 can be provided by the Extract 120process in any computer readable format including, but not limited to,database tables, flat files, JSON messages, and XML messages.Alternatively, such video viewing events can be collected directly fromthe source without the need for a Media Measurement Database 100. Insuch acase, those events can still be provided as video viewing activityin a format similar to that shown in FIG. 3 for use by the DataExplosion Process 140.

For all of the above embodiments, at the completion of Data ExplosionProcess 140, one record has been written to the Video Viewing DetailFile 150 for each second of the tune duration represented in the videoviewing activity record. The Sample Data in FIG. 3 shows a non-limitingexample of the input data for the Data Explosion Process 140. The SampleData in FIG. 4 shows a non-limiting example of the data produced by theData Explosion Process 140. The reader will note that FIG. 4 sample datacontains one record for every second of the tuning activity representedin the input data.

Those skilled in the art will readily recognize that the Data ExplosionProcess 140 is suitable for running in parallel on multiple computerssimultaneously with each process creating Video Viewing Detail Filerecords that can be fed into the MapReduce Aggregation Engine 200.

Proceeding with the review of FIG. 2, the Video Viewing Detail File 150data residing in HDFS is now ready for use by the MapReduce AggregationEngine 200. The MapReduce Aggregation Engine 200 runs various word countalgorithms against the incoming data. Each word count algorithm willaggregate the data to a separate level as shown in FIG. 2 (Parts 220,230, 240, 250) with the details shown in FIGS. 5-8.

The MapReduce process can be coded in JAVA or in Pig. I have coded thisin Pig. The code below can be used to create the four output filesreviewed in the Drawings (FIGS. 5 to 8):

-   -   Aggregated Video Viewing Geo+Server+Content+Demo File 220    -   Aggregated Video Viewing Geo+Server+Content File 230    -   Aggregated Video Viewing Content File 240    -   Aggregated Video Viewing File 250.

Using these four outputs, the reader will have a comprehensive set ofaggregated video viewing metrics. The reader should recognize that theaggregation logic shown below provides several illustrations of what canbe done. Additional aggregation combinations will be obvious to thoseskilled in the art.

The reader will note that I have used very descriptive names in the PigLatin code below so as to convey the meaning of what is happening. Muchshorter names could be used to produce the same result.

Creating the Aggregated Video Viewing Geo+Server+Content+Demo File 220

The Pig Latin coding to create the Aggregated Video ViewingGeo+Server+Content+Demo File 220 is shown next.

This summarization aggregates viewing activity for each combination ofgeographic identifier and server identifier and content identifier anddemographic identifier for each second of the aggregation period. Theresult provides viewing metrics for each combination of geographic areaand video server and content and demographic identifier as representedin the input data. As a nonlimiting example, a Video Content Identifiermay be a channel call sign; this summary then provides a count of howmany devices were tuned to that channel within each geographic area (acity or a region) and within each video server and for each demographicgroup. As an example, how many devices in the DENV Geo area served bySERVER-01 were tuned to ABC from Demo code 40-60 k during each second ofthe time period. A second example, how many devices in the DENV Geo areaserved by SERVER-01 were tuned to Program Monday Night Football fromDemo code 40-60 k during each second of the time period.

Video_Viewing_Detail_Data = LOAD ‘Video-Viewing-Detail-File’ 150 as (GEOGRAPHIC_ID:chararray,         1210 VIDEO_SERVER_ID:chararray,         1220 VIDEO_CONTENT_ID:chararray,        1230 DEMOGRAPHIC_ID:chararray,         1240 Video_Viewing_Detail_Data = LOAD‘Video-Viewing-Detail-File’ 150 as (GEOGRAPHIC_ID:chararray,         1210 VIDEO_SERVER_ID:chararray,         1220 VIDEO_CONTENT_ID:chararray,        1230 DEMOGRAPHIC_ID:chararray,         1240 SECOND_OF_DAY_WHEN_TUNED:chararray,   1250 COUNT_OF_1:chararray);            1260Aggregated_Video_Geo_Server_Content_Demo_Viewing =  GROUPVideo_Viewing_Detail_Data        by (GEOGRAPHIC_ID,      1410       VIDEO_SERVER_ID,        1420        VIDEO_CONTENT_ID,       1430       DEMOGRAPHIC_ID,        1440       SECOND_OF_DAY_WHEN_TUNED);   1450Count_of_Aggregated_Video_Geo_Server_Content_Demo_Viewing_by_Second = FOREACH Aggregated_Video_Geo_Server_Content_Demo_Viewing   GENERATEgroup    as Aggregated_Video_Geo_Server_Content_Demo_Viewing,    COUNT(Video_Viewing_Detail_Data)      asAggrGeoServerContentDemoViewingThisSecond; STORECount_of_Aggregated_Video_Geo_Server_Content_Demo_Viewing_by_Second 1460 INTO ‘Aggregated_Video_Viewing_Geo_Server_Content_Demo_File’; 220 Note:A sample of the file created by the aggregation is shown in FIG. 5Sample Data.

Creating the Aggregated Video Viewing Geo+Server+Content File 230

The Pig Latin coding to create the Aggregated Video ViewingGeo+Server+Content File 230 is shown next.

This summarization aggregates viewing activity for each combination ofgeographic identifier and server identifier and content identifier foreach second of the aggregation period. The result provides viewingmetrics for each combination of geographic area and video server andcontent id as represented in the input data. As a nonlimiting example, aVideo Content Identifier may be a channel call sign; this summary thenprovides a count of how many devices were tuned to that channel withineach geographic area (a city or a region) and within each video server.As an example, how many devices in the DENV Geo area served by SERVER-01were tuned to ABC during each second of the time period.

Video_Viewing_Detail_Data = LOAD ‘Video-Viewing-Detail-File’ 150 as (GEOGRAPHIC_ID:chararray,           1210 VIDEO_SERVER_ID:chararray,           1220 VIDEO_CONTENT_ID:chararray,          1230 DEMOGRAPHIC_ID:chararray,           1240 SECOND_OF_DAY_WHEN_TUNED:chararray,    1250 COUNT_OF_1:chararray);              1260Video_Viewing_Geo_Server_Content_Data =  FOREACHVideo_Viewing_Detail_Data   GENERATE GEOGRAPHIC_ID,         1210       VIDEO_SERVER_ID,         1220       VIDEO_CONTENT_ID,         1230       SECOND_OF_DAY_WHEN_TUNED,   1250       COUNT_OF_1;            1260 AggregatedVideo_Geo_Server_Content_Viewing =  GROUPVideo_Viewing_Geo_Server_Content_Data        by(GEOGRAPHIC_ID,        1610        VIDEO_SERVER_ID,          1620       VIDEO_CONTENT_ID,        1630       SECOND_OF_DAY_WHEN_TUNED);   1650Count_of_Aggregated_Video_Geo_Server_Content_Viewing_by_Second = FOREACH Aggregated_Video_Geo_Server_Content_Viewing   GENERATE group asAggregated_Video_   Geo_Server_Content_Viewing   COUNT(Video_Viewing_Geo_Server_Content_Data)      asAggrGeoServerContentViewingThisSecond; STORECourt_of_Aggregated_Video_Geo_Server_Content_Viewing_ by_Second 1660 INTO ‘Aggregated_Video_Viewing_Geo_Server_Content_File’;  230 Note: Asample of the file created by the aggregation is shown in FIG. 6 SampleData.

Creating the Aggregated Video Viewing Content File 240

The Pig Latin coding to create the Aggregated Video Viewing Content File240 is shown next. This summarization aggregates viewing across allgeographic identifiers, all servers, and all demographic groups for eachsecond of the aggregation period. The result provides viewing metricsfor the content (channel) across all geographic areas, video servers,and demographic groups as represented in the input data. As anonlimiting example, a Video Content Identifier may be a channel callsign; this summary then provides a count of how many devices were tunedto that channel during each second of the viewing period.

Video_Viewing_Detail_Data = LOAD ‘Video-Viewing-Detail-File’ 150 as (GEOGRAPHIC_ID:chararray,         1210 VIDEO_SERVER_ID:chararray,         1220 VIDEO_CONTENT_ID:chararray,        1230 DEMOGRAPHIC_ID:chararray,         1240 SECOND_OF_DAY_WHEN_TUNED:chararray,  1250 COUNT_OF_1:chararray);            1260 Video_Viewing_Content_Data = FOREACH Video_Viewing_Detail_Data   GENERATE VIDEO_CONTENT_ID,     1230     SECOND_OF_DAY_WHEN_TUNED,  1250      COUNT_OF_1;           1260Aggregated_Video_Content_Viewing =  GROUP Video_Viewing_Content_Data  by (VIDEO_CONTENT_ID,           1830     SECOND_OF_DAY_WHEN_TUNED);    1850Count_of_Aggregated_Video_Content_Viewing_by_Second =  FOREACHAggregated_Video_Content_Viewing   GENERATE group asAggregated_Video_Content_Viewing,    COUNT(Video_Viewing_Content_Data)    as AggrContentViewingThisSecond; STORECount_of_Aggregated_Video_Content_Viewing_by_Second 1860  INTO‘Aggregated_Video_Viewing_Content_File’;  240 Note: A sample of the filecreated by the aggregation is shown in FIG. 7 Sample Data.

Creating the Aggregated Video Viewing File 250

The Pig Latin coding to create the Aggregated Video Viewing File 250 isshown next. This summarization aggregates viewing activity across allgeographic identifiers, all servers, all content, and all demographicgroups for each second of the aggregation period. The result providesviewing metrics across all geographic areas, video servers, content ids,and demographic groups as represented in the input data. As anonlimiting example, this aggregation will provide insight into totalviewing activity during each second of the measurement period. This iscreating the denominator which can be used in calculations which measurethe percentage of the total viewing audience that a particular piece ofcontent earned.

Video_Viewing_Detail_Data = LOAD ‘Video-Viewing-Detail-File’ 150 as (GEOGRAPHIC_ID:chararray,         1210 VIDEO_SERVER_ID:chararray,         1220 VIDEO_CONTENT_ID:chararray,        1230 DEMOGRAPHIC_ID:chararray,         1240 SECOND_OF_DAY_WHEN_TUNED:chararray,  1250 COUNT_OF_1:chararray);            1260 Video_Viewing_Data =  FOREACHVideo_Viewing_Detail_Data   GENERATE: SECOND_OF_DAY_WHEN_TUNED, 1250   COUNT_OF_1;                1260 Aggregated_Video_Viewing =  GROUPVideo_Viewing_Data by SECOND_OF_DAY_  WHEN_TUNED; 2050Count_of_Aggregated_Video_Viewing_by_Second =  FOREACHAggregated_Video_Viewing   GENERATE group as Aggregated_Video_Viewing,   COUNT(Video_Viewing_Data) as AggrViewingThisSecond; STORECount_of_Aggregated_Video_Viewing_by_Second 2060  INTO‘Aggregated_Video_Viewing_File’;  250 Note: A sample of the file createdby the aggregation is shown in FIG. 8 Sample Data.

FIG. 3 illustrates an exemplary record layout for a Video ViewingActivity Data File 130 record formatted for use as input to the DataExplosion Process 140, according to one embodiment.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

FIG. 4 illustrates an exemplary record layout for a Video Viewing DetailFile 150 record which is output from the Data Explosion Process 140,according to one embodiment. This file is then ready for input to theMapReduce Aggregation Engine 200.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

Overview of FIGS. 5 to 8

FIGS. 5 to 8 review several outputs which are created by the MapReduceAggregation Engine 200. There are multiple ways to aggregate the datadepending upon the desired result. In FIGS. 5 to 8 I have shown severaloptions. A person skilled in the art will readily identify additionalaggregations options that fall within the spirit and scope of thisapplication.

FIG. 5 illustrates an exemplary record layout for a Aggregated VideoViewing Geo+Server+Content+Demo File 220 record which is output from theMapReduce Aggregation Engine 200, according to one embodiment. This fileis ready for input to downstream analytics processes.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

FIG. 6 Illustrates an exemplary record layout for a Aggregated VideoViewing Geo+Server+Content File 230 record which is output from theMapReduce Aggregation Engine 200, according to one embodiment. This fileis ready for input to downstream analytics processes.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

FIG. 7 Illustrates an exemplary record layout for a Aggregated VideoViewing Content File 240 record which is output from the MapReduceAggregation Engine 200, according to one embodiment. This file is readyfor input to downstream analytics processes.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

FIG. 8 Illustrates an exemplary record layout for a Aggregated VideoViewing File 250 record which is output from the MapReduce AggregationEngine 200, according to one embodiment. This file is ready for input todownstream analytics processes.

There is Summary Information followed by the Data Structure includingfield definitions. After the Data Structure there is a set of SampleData.

Alternative Embodiments

Although the description above contains much specificity, this shouldnot be construed as limiting the scope of the embodiments but as merelyproviding illustrations of some of several embodiments. As a nonlimitingexample, additional qualifiers may be added along with geographicidentifiers, video server identifiers, video content identifiers, anddemographic identifiers. Additional aggregations can be done using othercombinations of these identifiers.

Scope of Viewer Interaction Data Loaded

I presently contemplate that the MapReduce Aggregation Engine 200 willprocess viewer interaction data for whatever set of viewing activity isprovided to it. This may be one Video Program at a time, one hour of theday, a primetime television viewing period, an entire 24 hour day ofviewing, a week of viewing, or another time period decided by theanalyst. Another embodiment may simply process viewing activity withinthe context of a single program, or a single advertisement, or someother combination.

Identifiers for Data

I presently contemplate using a combination of numeric and mnemonics forthe various identifiers such as geographic identifiers, video serveridentifiers, video content identifiers, and demographic identifiers, andother similar fields, but another embodiment could use only numericvalues as identifiers with links to reference tables for thedescriptions of the numeric identifiers or only mnemonic identifiers.

Data Explosion Process

I presently contemplate that the Data Explosion Process 140 willgenerate one record for each second of the tuning activity. Anotherembodiment may generate one record for each video frame of viewingactivity. In this case, the second of the day for tune-in and tune-outwould be replaced by a frame number of the tune-in and a frame number ofthe tune-out.

Yet another embodiment may generate records at a one minute level withthe count being the number of seconds tuned to the content during thatminute (in this case there would be 1,440 possible one minute intervalsduring a 24 hour day).

Yet another embodiment may generate records at a 10-second level withthe count being the number of seconds tuned to the content during that10-second interval (in this case there would be 8,640 possible 10-secondintervals during a 24 hour day).

Programming Algorithm Scope

I presently contemplate executing the algorithms described hereinseparately in some sequence, but another embodiment could combinemultiple simple algorithms into fewer complex algorithms.

Receiving Date and Time Information

I presently contemplate that the various file formats which provide dateand time information will provide an actual date and time whetherrepresented in a format such as YYYY-MM-DD HH:MM:SS AM/PM, or Epoch time(seconds since Jan. 1, 1970). Another embodiment may provide the tune-inand tune-out times as seconds relative to the true beginning of theprogram content. Any of these embodiments can be used as input to createthe metrics.

I presently contemplate receiving all of the date and time values inlocal time, but another embodiment may provide these in CoordinatedUniversal Time (UTC time).

General Information

I presently contemplate using variables having the data types and fieldsizes shown, but another embodiment may use variables with differentdata types and field sizes to accomplish a similar result.

I presently contemplate tracking viewing activity at the granularity ofone second, but anotherembodiment may track viewing activity at a finergranularity, perhaps half-second, or tenth-second, or millisecond. Yetanother embodiment may receive data at a granularity finer than onesecond and round to the nearest second for use by the MapReduceAggregation Engine 200.

I presently contemplate using record layouts similar to those definedherein, but another embodiment may use a different record layout orrecord layouts to accomplish a similar result. As a non limitingexample, another embodiment may use database tables or other objectsinstead of record layouts similar to those I have defined herein toaccomplish a similar result while still working within the spirit andscope of this disclosure.

Implementation Information

I presently contemplate using the generic Apache Hadoop distribution,but another embodiment may use a different Hadoop distribution.

I presently contemplate using Linux operating system, but anotherembodiment may use a different operating system.

I presently contemplate using the Pig along with the Pig Latin dataflowlanguage, but another embodiment may use Java or Python or some otherlanguage alone or in combination with Pig Latin.

General Remarks

It will be apparent to those of ordinary skill in the art that variouschanges and modifications may be made which clearly fall within thescope of the embodiments revealed herein. In describing an embodimentillustrated in the drawings, specific terminology has been used for thesake of clarity. However, the embodiments are not intended to be limitedto the specific terms so selected, and it is to be understood that eachspecific term includes all technical equivalents which operate in asimilar manner to accomplish a similar purpose.

In general, it will be apparent to one of ordinary skill in the art thatvarious embodiments described herein, or components or parts thereof,may be implemented in many different embodiments of software, firmware,and/or hardware, or modules thereof. The software code or specializedcontrol hardware used to implement some of the present embodiments isnot limiting of the present embodiment. For example, the embodimentsdescribed hereinabove may be implemented in computer software using anysuitable computer software language type such as, for example, Python ofJAVA using, for example, conventional or object-oriented techniques.Such software may be stored on any type of suitable computer-readablemedium or media such as, for example, a magnetic or optical storagemedium. Thus, the operation and behavior of the embodiments aredescribed in Pig Latin dataflow language purely as a matter ofconvenience. It is clearly understood that artisans of ordinary skillwould be able to design software and control hardware to implement theembodiments presented in the language of their choice based on thedescription herein with only a reasonable effort and without undueexperimentation.

The processes associated with the present embodiments may be executed byprogrammable equipment, such as computers. Software or other sets ofinstructions that may be employed to cause programmable equipment toexecute the processes may be stored in any storage device, such as, forexample, a computer system (non-volatile) memory, a compact disk, anoptical disk, magnetic tape, or magnetic disk. Furthermore, some of theprocesses may be programmed when the computer system is manufactured orvia a computer-readable medium.

It can also be appreciated that certain process aspects disclosed hereinmay be performed using instructions stored on a computer-readable memorymedium or media that direct a computer or computer system to performprocess steps. A computer-readable medium may include, for example,memory devices such as diskettes, compact discs of both read-only andread/write varieties, optical disk drives, memory sticks, and hard diskdrives. A computer-readable medium may also include memory storage thatmay be physical, virtual, permanent, temporary, semi-permanent and/orsemi-temporary.

In various embodiments disclosed herein, a single component or algorithmmay be replaced by multiple components or algorithms, and multiplecomponents or algorithms may be replaced by a single component oralgorithm, to perform a given function or functions. Except where suchsubstitution would not be operative to implement the embodimentsdisclosed herein, such substitution is within the scope presentedherein. Thus any element expressed herein as a means or a method forperforming a specified function is intended to encompass any way ofperforming that function including, for example, a combination ofelements that performs that function. Therefore, any means or methodthat can provide such functionalities may be considered equivalents tothe means or methods shown herein.

It can be appreciated that the “data analysis computer system” may be,for example, any computer system capable of running MapReduce, whetherit be a one node system or a system with thousands of nodes.

While various embodiments have been described herein, it should beapparent, however, that various modifications, alterations andadaptations to those embodiments may occur to persons skilled in the artwith the attainment of some or all of the advantages described herein.The disclosed embodiments are therefore intended to include all suchmodifications, alterations and adaptations without departing from thescope and spirit of the embodiments presented herein as set forth in theappended claims.

Accordingly, the scope should be determined not by the embodimentsillustrated, but by the appended claims and their legal equivalents.

CONCLUSIONS, RAMIFICATIONS, AND SCOPE

In my previous applications, I have identified numerous Conclusions,Ramifications, and Scope items. Many of those are similar for thisapplication. The Conclusions, Ramifications, and Scope items from myU.S. Pat. No. 8,365,212 B1 issued on Jan. 29, 2013, and my U.S. Pat. No.8,365,213 B1 issued on Jan. 29, 2013, and my U.S. application Ser. No.13/360,704 filed on Jan. 28, 2012, and my U.S. application Ser. No.13/567,073 filed on Aug. 5, 2012 and my U.S. application Ser. No.13/740,199 filed on Jan. 13, 2013 are included herein by reference butnot admitted to be prior art.

In this discussion below, I will focus on new ramifications introducedby this application.

From the description above, a number of advantages of some embodimentsof my MapReduceAggregation Engine 200 and its supporting processesbecome evident:

In this specification I have taught how to measure or analyze videoviewing activity at a second-by-second level using the Hadoop MapReduceframework. Within this context, I have taught how to measure suchviewing activity within multiple levels: (a) a geographic area, (b) avideo server, (c) a video content identifier, and (d) a demographicgrouping. Additionally, I have taught how to measure viewing across allof these to provide denominators for calculating percentage of viewingaudience. All of these metrics can be calculated at a second-by-secondlevel for each second of the video content.

Once the metrics are calculated, the resulting files can be loaded to adatabase for longitudinal analysis. As a nonlimiting example, theprogram level metrics can be tracked to identify week-to-week activity.Then the more detailed metrics can provide additional insight into thecauses behind the overall trends.

The ability to produce these metrics using the Hadoop MapReduceframework provides a new tool for data analysts to use in understandingviewing behavior.

This method of using the Hadoop MapReduce framework to calculatesecond-by-second viewing activity by aggregating individual viewingrecords that were created by exploding the viewing period intoindividual records where each record represents one second of viewingactivity is contrary to the teaching of those who work with start timeand duration (seconds viewed). Thus I am able to solve problemspreviously found insolvable when limited to using the existingtechniques. I am able to provide metrics that could not be producedusing existing techniques.

Subsequent Usage of the Metrics

The metrics produced by the MapReduce Aggregation Engine 200 readilylend themselves to dimensional analysis using contemporary datawarehouse methods. I have reviewed this extensively in my priorapplications.

The metrics produced by the MapReduce Aggregation Engine 200 can beloaded to a data warehouse to support additional longitudinal analysisbeyond what is done by the Engine 200. Thus we can readily envision amyriad of uses for the metrics produced by the MapReduce AggregationEngine 200.

Numerous additional metrics can readily be identified by those skilledin the art. Additionally, numerous additional uses for the metricsidentified herein will be readily evident to those skilled in the art.

SUMMARY

In accordance with one embodiment, I have disclosed acomputer-implemented method of using video viewing activity data asinput to an aggregation engine built on the Hadoop MapReduce distributedcomputing framework for parallel processing which calculatessecond-by-second video viewing activity aggregated to the analyst'schoice of (a) geographic area, (b) video server, (c) video content(channel call sign, video program, etc.), or (d) viewer demographic, orany combination of these fields, for each second of the day representedin the video viewing activity data. The engine also calculates overallviewing for use as a denominator in calculations. The source data may beextracted from a database defined according to the Cable TelevisionLaboratories, Inc. Media Measurement Data Model defined in “AudienceData Measurement Specification” as “OpenCable™ Specifications, AudienceMeasurement, Audience Measurement Data Specification” documentOC-SP-AMD-101-130502 or any similar format. These metrics providedetailed data needed to calculate information on customer viewingbehavior that can drive business decisions for service providers,advertisers, and content producers. The ability to use the HadoopMapReduce framework to aggregate this data will meet pressing needs fordetailed audience viewership information that is not presently availableand thus the metrics will be of great value to the industry.

1. An apparatus comprising: one or more processors; and memory storingcomputer executable instructions that, when executed by the one or moreprocessors, cause the apparatus to: receive data indicating a pluralityof video-viewing events, wherein each video-viewing event of theplurality of video-viewing events is associated with one or moreintervals, of a plurality of intervals of a video asset, during which avideo-asset-viewing device, of a plurality of video-asset-viewingdevices, output the video asset; determine, based on the plurality ofvideo-viewing events, and for each interval of the plurality ofintervals of the video asset, an amount of time during which thevideo-asset-viewing device output the video asset; and determine, basedon the amount of time determined for a first interval of the pluralityof intervals of the video asset, a content viewing count associated withthe plurality of video-asset-viewing devices outputting the video assetduring the first interval.
 2. The apparatus of claim 1, wherein theinstructions, when executed by the one or more processors, cause theapparatus to determine the amount of time by: determining a number ofpredefined increments of time, of the each interval, during which thevideo-asset-viewing device output the video asset.
 3. The apparatus ofclaim 1, wherein the instructions, when executed by the one or moreprocessors, cause the apparatus to determine the amount of time by:determining a number of frames of the video asset that thevideo-asset-viewing device output during the each interval.
 4. Theapparatus of claim 1, wherein the plurality of intervals of the videoasset comprises a plurality of equally sized intervals of the videoasset.
 5. The apparatus of claim 1, wherein the amount of timedetermined for the first interval of the plurality of intervals of thevideo asset is less than the first interval.
 6. The apparatus of claim1, wherein the amount of time determined for the first interval of theplurality of intervals of the video asset comprises a count of a numberof seconds, of the first interval, during which the video-asset-viewingdevice output the video asset.
 7. The apparatus of claim 1, wherein theinstructions, when executed by the one or more processors, further causethe apparatus to increment a content viewing count, associated with thefirst interval of the plurality of intervals of the video asset, by theamount of time determined for the first interval of the plurality ofintervals of the video asset.
 8. One or more non-transitory computerreadable media storing instructions that, when executed cause: receivingdata indicating a plurality of video-viewing events, wherein eachvideo-viewing event of the plurality of video-viewing events isassociated with one or more intervals, of a plurality of intervals of avideo asset, during which a video-asset-viewing device, of a pluralityof video-asset-viewing devices, output the video asset; determining,based on the plurality of video-viewing events, and for each interval ofthe plurality of intervals of the video asset, an amount of time duringwhich the video-asset-viewing device output the video asset; anddetermining, based on the amount of time determined for a first intervalof the plurality of intervals of the video asset, a content viewingcount associated with the plurality of video-asset-viewing devicesoutputting the video asset during the first interval.
 9. The one or morenon-transitory computer readable media of claim 8, wherein theinstructions, when executed, cause determining the amount of time bycausing: determining a number of predefined increments of time, of theeach interval, during which the video-asset-viewing device output thevideo asset.
 10. The one or more non-transitory computer readable mediaof claim 8, wherein the instructions, when executed, cause determiningthe amount of time by causing: determining a number of frames of thevideo asset that the video-asset-viewing device output during the eachinterval.
 11. The one or more non-transitory computer readable media ofclaim 8, wherein the plurality of intervals of the video asset comprisesa plurality of equally sized intervals of the video asset.
 12. The oneor more non-transitory computer readable media of claim 8, wherein theamount of time determined for the first interval of the plurality ofintervals of the video asset is less than the first interval.
 13. Theone or more non-transitory computer readable media of claim 8, whereinthe amount of time determined for the first interval of the plurality ofintervals of the video asset comprises a count of a number of seconds,of the first interval, during which the video-asset-viewing deviceoutput the video asset.
 14. The one or more non-transitory computerreadable media of claim 8, wherein the instructions, when executed,further cause incrementing a content viewing count, associated with thefirst interval of the plurality of intervals of the video asset, by theamount of time determined for the first interval of the plurality ofintervals of the video asset.
 15. A system comprising: avideo-asset-viewing device, of a plurality of video-asset-viewingdevices, comprising: one or more first processors; and first memorystoring first instructions that, when executed by the one or more firstprocessors, cause the video-asset-viewing device to send data indicatinga plurality of video-viewing events; and a computing device comprising:one or more second processors; and second memory storing secondinstructions that, when executed by the one or more second processors,cause the computing device to: receive the data indicating the pluralityof video-viewing events, wherein each video-viewing event of theplurality of video-viewing events is associated with one or moreintervals, of a plurality of intervals of a video asset, during whichthe video-asset-viewing device output the video asset; determine, basedon the plurality of video-viewing events, and for each interval of theplurality of intervals of the video asset, an amount of time duringwhich the video-asset-viewing device output the video asset; anddetermine, based on the amount of time determined for a first intervalof the plurality of intervals of the video asset, a content viewingcount associated with the plurality of video-asset-viewing devicesoutputting the video asset during the first interval.
 16. The system ofclaim 15, wherein the second instructions, when executed by the one ormore second processors, cause the computing device to determine theamount of time by: determining a number of predefined increments oftime, of the each interval, during which the video-asset-viewing deviceoutput the video asset.
 17. The system of claim 15, wherein the secondinstructions, when executed by the one or more second processors, causethe computing device to determine the amount of time by: determining anumber of frames of the video asset that the video-asset-viewing deviceoutput during the each interval.
 18. The system of claim 15, wherein theplurality of intervals of the video asset comprises a plurality ofequally sized intervals of the video asset.
 19. The system of claim 15,wherein the amount of time determined for the first interval of theplurality of intervals of the video asset comprises a count of a numberof seconds, of the first interval, during which the video-asset-viewingdevice output the video asset.
 20. The system of claim 15, wherein thesecond instructions, when executed by the one or more second processors,further cause the computing device to increment a content viewing count,associated with the first interval of the plurality of intervals of thevideo asset, by the amount of time determined for the first interval ofthe plurality of intervals of the video asset.